Page({
  data: {
    categories: [],
    activeCategory: 0,
    foodList: [],
    scrollTop: 0,
    loading: true,
    cartItems: {}, // 存储购物车数量，格式为 {food_id: count}
    hasCartItems: false // 标记购物车是否有商品
  },
  
  onLoad: function (options) {
    // 获取分类列表
    this.getCategories().then(() => {
      if (options.id) {
        // 跳转时携带分类ID，设置默认选中
        const index = this.data.categories.findIndex(item => item.id == options.id);
        if (index !== -1) {
          this.setData({
            activeCategory: index
          });
        }
      }
      
      // 获取默认分类下的食品列表
      if (this.data.categories.length > 0) {
        this.getFoodList(this.data.categories[this.data.activeCategory].id);
      }
    });
    
    // 获取购物车数据
    this.getCartData();
  },
  
  onShow: function() {
    // 页面显示时更新购物车数据
    this.getCartData();
    
    // 检查是否有通过首页传递的分类ID
    const app = getApp();
    if (app.globalData.selectedCategoryId) {
      // 查找分类在列表中的索引
      const index = this.data.categories.findIndex(item => item.id == app.globalData.selectedCategoryId);
      if (index !== -1 && index !== this.data.activeCategory) {
        // 切换到指定分类
        this.setData({
          activeCategory: index,
          scrollTop: 0  // 切换分类时，列表滚动到顶部
        });
        
        // 获取该分类下的食品列表
        this.getFoodList(this.data.categories[index].id);
      }
      
      // 使用完毕后清除，避免影响下次进入
      app.globalData.selectedCategoryId = null;
    }
  },
  
  // 获取分类列表
  getCategories: function() {
    this.setData({ loading: true });
    const app = getApp();
    
    return app.globalData.api.category.getAll()
      .then(res => {
        // 处理分类图标URL，确保是完整URL
        const categories = (res.results || res).map(item => {
          if (item.icon_url) {
            // 优先使用服务器提供的完整URL
            item.icon = item.icon_url;
          } else if (item.icon) {
            item.icon = app.globalData.api.getFullImageUrl(item.icon);
          }
          return item;
        });
        
        this.setData({
          categories: categories,
          loading: false
        });
      })
      .catch(err => {
        console.error('获取分类列表失败', err);
        this.setData({ loading: false });
        wx.showToast({
          title: '获取分类失败',
          icon: 'none'
        });
      });
  },
  
  // 切换分类
  switchCategory: function (e) {
    const index = e.currentTarget.dataset.index;
    if (index !== this.data.activeCategory) {
      this.setData({
        activeCategory: index,
        scrollTop: 0  // 切换分类时，列表滚动到顶部
      });
      
      // 获取该分类下的食品列表
      this.getFoodList(this.data.categories[index].id);
    }
  },
  
  // 获取食品列表
  getFoodList: function (categoryId) {
    this.setData({ loading: true });
    const app = getApp();
    
    console.log('获取分类食品列表，分类ID:', categoryId);
    
    app.globalData.api.category.getDetail(categoryId)
      .then(res => {
        console.log('分类详情API返回:', res);
        
        // 处理食品图片URL，确保是完整URL
        let foods = [];
        
        if (res.foods && Array.isArray(res.foods)) {
          foods = res.foods.map(item => {
            if (item.image_url) {
              // 优先使用服务器提供的完整URL
              item.image = item.image_url;
            } else if (item.image) {
              item.image = app.globalData.api.getFullImageUrl(item.image);
            }
            
            if (item.images && item.images.length > 0) {
              item.images = item.images.map(img => {
                if (img.image_url) {
                  img.image_url = app.globalData.api.getFullImageUrl(img.image_url);
                }
                return img;
              });
            }
            return item;
          });
        }
        
        console.log('处理后的食品列表:', foods);
        
        this.setData({
          foodList: foods,
          loading: false
        });
      })
      .catch(err => {
        console.error('获取食品列表失败', err);
        this.setData({ loading: false });
        wx.showToast({
          title: '获取食品列表失败',
          icon: 'none'
        });
      });
  },
  
  // 跳转到食品详情
  goToDetail: function (e) {
    const id = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/detail/detail?id=${id}`
    });
  },
  
  // 添加到购物车
  addToCart: function (e) {
    // 已经使用catchtap绑定，不需要再阻止冒泡
    
    const app = getApp();
    const userInfo = app.globalData.userInfo;
    const foodId = e.currentTarget.dataset.id;
    
    // 获取当前商品信息
    // 添加非空检查，确保商品列表数组存在
    if (!this.data.foodList || !Array.isArray(this.data.foodList)) {
      console.error('foodList数组未定义或不是数组');
      wx.showToast({
        title: '添加失败',
        icon: 'none'
      });
      return;
    }
    
    const foodItem = this.data.foodList.find(item => item.id === foodId);
    if (!foodItem) {
      console.error('未找到对应的商品信息');
      wx.showToast({
        title: '添加失败',
        icon: 'none'
      });
      return;
    }
    
    // 获取当前购物车中商品数量
    const cartItems = {...this.data.cartItems};
    const count = (cartItems[foodId] || 0) + 1;
    
    // 如果未登录，使用本地购物车
    if (!userInfo) {
      // 引入购物车工具
      const cartUtils = require('../../utils/cartUtils');
      
      // 添加到本地购物车
      cartUtils.addToLocalCart(foodItem);
      
      // 更新本地购物车数据
      cartItems[foodId] = count;
      
      // 更新购物车状态和"去购物车结算"按钮状态
      this.setData({ 
        cartItems,
        hasCartItems: true
      });
      
      wx.showToast({
        title: '已加入购物车',
        icon: 'success'
      });
      
      return;
    }
    
    // 已登录用户，调用API添加到购物车
    app.globalData.api.cart.add({ food: foodId, count: 1 })
      .then(res => {
        // 更新本地购物车数据
        cartItems[foodId] = count;
        
        // 更新购物车状态和"去购物车结算"按钮状态
        this.setData({ 
          cartItems,
          hasCartItems: true // 添加商品时直接将hasCartItems设为true
        });
        
        wx.showToast({
          title: '已加入购物车',
          icon: 'success'
        });
        
        // 重新获取购物车数据以确保一致性
        this.getCartData();
      })
      .catch(err => {
        console.error('添加到购物车失败', err);
        wx.showToast({
          title: '添加失败',
          icon: 'none'
        });
      });
  },
  
  // 从购物车减少商品
  minusFromCart: function(e) {
    // 已经使用catchtap绑定，不需要再阻止冒泡
    
    const app = getApp();
    const userInfo = app.globalData.userInfo;
    const foodId = e.currentTarget.dataset.id;
    
    // 获取当前购物车中商品数量
    const cartItems = {...this.data.cartItems};
    const currentCount = cartItems[foodId] || 0;
    
    if (currentCount <= 0) return;
    
    // 如果未登录，使用本地购物车
    if (!userInfo) {
      // 引入购物车工具
      const cartUtils = require('../../utils/cartUtils');
      
      // 从本地购物车减少
      cartUtils.updateLocalCartItemCount(foodId, currentCount - 1);
      
      const count = currentCount - 1;
      
      if (count === 0) {
        // 从本地购物车中删除
        delete cartItems[foodId];
      } else {
        // 更新本地购物车数据
        cartItems[foodId] = count;
      }
      
      // 检查购物车是否还有商品
      const totalItems = Object.values(cartItems).reduce((sum, cnt) => sum + cnt, 0);
      
      // 如果购物车为空，清除hasCartItems标记
      if (totalItems === 0) {
        this.setData({
          cartItems: {},
          hasCartItems: false
        });
        
        // 显示已清空购物车提示
        wx.showToast({
          title: '已清空购物车',
          icon: 'success'
        });
      } else {
        this.setData({ 
          cartItems,
          hasCartItems: true
        });
        
        wx.showToast({
          title: count === 0 ? '已移除商品' : '已减少数量',
          icon: 'success'
        });
      }
      
      return;
    }
    
    // 已登录用户，调用API从购物车减少
    app.globalData.api.cart.add({ food: foodId, count: -1 })
      .then(res => {
        // 更新本地购物车数据
        cartItems[foodId] = count;
        
        // 检查购物车是否还有商品
        const totalItems = Object.values(cartItems).reduce((sum, cnt) => sum + cnt, 0);
        
        // 如果购物车为空，清除hasCartItems标记
        if (totalItems === 0) {
          this.setData({
            cartItems: {},
            hasCartItems: false
          });
          
          // 显示已清空购物车提示
          wx.showToast({
            title: '已清空购物车',
            icon: 'success'
          });
        } else {
          this.setData({ 
            cartItems,
            hasCartItems: true
          });
          
          wx.showToast({
            title: count === 0 ? '已移除商品' : '已减少数量',
            icon: 'success'
          });
        }
        
        // 重新获取购物车数据以确保一致性
        this.getCartData();
      })
      .catch(err => {
        console.error('更新购物车失败', err);
        wx.showToast({
          title: '操作失败',
          icon: 'none'
        });
      });
  },
  
  // 搜索菜品
  onSearch: function(e) {
    const keyword = e.detail.value;
    if (keyword.trim()) {
      wx.navigateTo({
        url: `/pages/search/search?keyword=${encodeURIComponent(keyword)}`
      });
    }
  },
  
  // 跳转到搜索页面
  goToSearch: function() {
    wx.navigateTo({
      url: '/pages/search/search'
    });
  },
  
  // 下拉刷新
  onPullDownRefresh: function() {
    // 刷新当前分类数据
    const categoryId = this.data.categories[this.data.activeCategory].id;
    this.getFoodList(categoryId);
    
    // 完成后停止下拉刷新
    wx.stopPullDownRefresh();
  },
  
  // 获取购物车数据
  getCartData: function() {
    const app = getApp();
    const userInfo = app.globalData.userInfo;
    
    // 引入购物车工具
    const cartUtils = require('../../utils/cartUtils');
    
    // 如果未登录，获取本地购物车数据
    if (!userInfo) {
      const localCart = cartUtils.getLocalCart();
      const cartItems = {};
      let totalItems = 0;
      
      // 处理本地购物车数据 - 正确处理localCart数组
      localCart.forEach(item => {
        if (item.count > 0) {
          cartItems[item.food] = item.count;
          totalItems += item.count;
        }
      });
      
      // 更新购物车状态
      this.setData({
        cartItems,
        hasCartItems: totalItems > 0
      });
      
      console.log('当前本地购物车数据:', cartItems, '是否有商品:', totalItems > 0);
      return;
    }
    
    // 已登录用户，从服务器获取购物车数据
    app.globalData.api.cart.getList()
      .then(res => {
        const cartItems = {};
        let totalItems = 0;
        
        // 只处理数量大于0的购物车项目
        (res.results || []).forEach(item => {
          if (item.count > 0) {
            cartItems[item.food] = item.count;
            totalItems += item.count;
          }
        });
        
        // 如果购物车为空，清除购物车数据
        if (totalItems === 0) {
          this.setData({
            cartItems: {},
            hasCartItems: false
          });
        } else {
          this.setData({ 
            cartItems,
            hasCartItems: true
          });
        }
        
        console.log('当前购物车数据:', cartItems, '是否有商品:', totalItems > 0);
      })
      .catch(err => {
        console.error('获取购物车数据失败', err);
      });
  },
  
  // 前往购物车页面
  goToCart: function() {
    wx.switchTab({
      url: '/pages/cart/cart'
    });
  }
}) 